//删除所有相邻重复项
/**
 * 删除所有重复相邻项，是对栈的基本使用
 * 过程，将所有相邻的字符都从字符串中进行排除，例如abba，将b删除后，剩下了，aa，也要进行删除，最终，该字符串只剩下一个空字符串
 */

import java.util.Stack;


public class deleteAdjacentDuplicationE {
    public void delete(String s){
        Stack<Character> stack = new Stack<>();
        char[] cs = s.toCharArray();
        for (char c:cs){
            if(stack.isEmpty()){//如果当前栈为空
                stack.push(c);
            }else if(stack.peek()==c){//如果当前元素和栈顶元素相同，就消除
                stack.pop();
            }else{
                stack.push(c);
            }
        }
        System.out.println(stack.toString());
    }
    public static void main(String[] args) {
        var main = new deleteAdjacentDuplicationE();
        main.delete("abbaca");
    }
}
